基本上網路的基礎知識都介紹完了,接下來就要進入容器的網路了(Kubernetes 的 CNI 還要再等等)。
各位應該都知道容器能可以到資源隔離,包含 CPU、記憶體、檔案系統以及網路都能進行隔離(namespace 負責資源隔離,cgroups 負責資源限制)。
這時問題就出來了,CPU、記憶體這些資源進行隔離是沒什麼問題,但網路跟著隔離就不對勁了。因為網路需要與其他裝置進行連接,並互相交換數據,就像我們開個後端服務,總是需要網路讓其他人能夠進行連線才對吧。
因此這時候就需要有一個能夠進行隔離、但依然能夠進行資料傳輸的方式來負責容器網路的隔離。
最為簡單的方式就是在容器跟宿主機之間建立一個隧道,使宿主機收到的網路可以通過隧道進到容器中,而這個方案就是 veth-pair 。
veth-pair 可以將網路封包送入宿主機的網路介面,經過隧道後從容器中的網路介面出來,這樣容器中的服務就可以收到封包了。反過來說,容器中的服務將網路封包送入容器中的網路介面,經過隧道後從宿主機的網路介面出來。
透過這種方式,容器就可以接收及發送網路封包了。
那今天就到這邊,各位明天再見。